feat: v0.8.0 - #90
Conversation
Separates what a task is expected to take from what it is allowed to take. Estimates now carry a typed forecast contract — task facts, execution profiles, admission caps, forecasts and outcomes are distinct records — and scoring matches actuals against expected values instead of caps. Breaking changes: - Cap-based scoring is rejected; matching work or wall-time actuals are scored against expected values. - Legacy calibration databases require an explicit expected-work attestation. - settings.review_overhead is rejected with exit code 2; select additive review with --review-mode or an execution_profile.review block. - The JSON estimated_cost alias is removed in favor of heuristic_cost. Also adds validated, versioned YAML requests through estimate --spec, caller-supplied token forecasts with explicit local-policy provenance, required-capability enforcement on a named spec executor, and expected wall time reported independently of admission caps. Migration guidance for both removals is in docs/migration-v0.8.md.
|
Not a flake. The dependency-floor job added in this release asserts The assertion needs to target a module that actually ships. Fixing at source rather than patching this branch, then rebuilding the export. |
The floors job imported agent_estimate.tracing.schema, which is not part of this repository — the assertion could only ever fail here. Point it at agent_estimate.contract.schema, which ships and exercises the same Pydantic 2.5 surface (AwareDatetime, StringConstraints, AfterValidator). The export-boundary job now resolves every agent_estimate module an exported workflow imports against the export itself, so this class of mismatch fails before it reaches this repository rather than after.
|
✅ Green and ready to merge — supersedes the do-not-merge notice above.
The floors assertion targets The branch carries 2 commits rather than 1: the release-machinery fix was layered on top of the promote commit instead of amending it, so nothing already pushed was rewritten. The squash merge collapses them. Tree verified against a fresh export of the upstream default branch — identical except After merge: tag |
Promotes v0.8.0. 49 files, +2899 / −70.
v0.8 separates what a task is expected to take from what it is allowed to take. Estimates carry a typed forecast contract, and scoring matches actuals against expected values rather than admission caps.
Breaking changes
calibrate --basis expected-worksettings.review_overheadrejected with exit code 2--review-modeorexecution_profile.reviewestimated_costalias removedheuristic_costBoth removals were warned about in 0.7.5.
Also in this release
Validated, versioned YAML requests through
estimate --spec; caller-supplied token forecasts with explicit local-policy provenance; required-capability enforcement on a named spec executor; expected wall time reported independently of admission caps; agent profile adjustments that scale assigned work without changing assignments.Release machinery
publish.ymlnow attaches the built wheel and sdist to the Release that triggers it — the last three releases shipped with no assets. Therelease: [published]trigger, the workflow-level empty permissions map, the public-repository guard, and the SHA pins on all three existing actions are unchanged; the job'scontents: readbecomescontents: write.The upload step runs after the PyPI publish rather than before it: PyPI is immutable and an asset upload is re-runnable, so the irreversible step goes first and a failed upload costs a manual re-upload instead of a version bump.
Export verification
git archiveof the source default branch, honoring.gitattributes export-ignore— the trace schemas, their renderer, and the packaging/regression guards stay out, and their now-empty directories were pruned rather than committed.[Unreleased]header is preserved, prior sections verified byte-identical, and the new section's 14 relative links were absolutized to match existing public convention./Users/testuserredaction fixture, a historical org-transfer line in an old changelog section, andWave Ncomments in the wave-planner tests — are all pre-existing onmainand none is added by this promote.One item for your call
The
### Fixedentry about restricting publishing to the public repository describes a CI-configuration change with no user-visible delta, which is the class our changelog discipline drops at a version stamp. I carried it across rather than deleting an entry an earlier merged change authored, but it is arguably noise for a public reader — say the word and I will drop it before this merges. The workflow change in this release deliberately carries no changelog line for the same reason.After merge
Tag
v0.8.0, then create the GitHub Release exactly once — that is what triggers the PyPI publish. Then thev0major tag moves to the release commit and the Marketplace listing is verified.